package cn.stylefeng.guns.modular.business.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.Date;

@ApiModel(value="cn-stylefeng-guns-modular-business-dto-DeviceConfigUpdateDto")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeviceConfigUpdateOrAddDto implements Serializable {



    @ApiModelProperty(value="id")
    private Integer id;

    /**
     * 项目名称
     */
    @ApiModelProperty(value="项目名称")
    @NotBlank(message = "项目名称不能为空")
    private String projectName;

    /**
     * 桂建通项目ID，后期修改别的表，用对应的整形ID，不用桂建通的这个ID了
     */
    @ApiModelProperty(value="桂建通项目ID，后期修改别的表，用对应的整形ID，不用桂建通的这个ID了")
    @NotBlank(message = "项目id不能为空")
    private String projectId;

    /**
     * 厂家编号、品牌编号，方便搜索
     */
    @ApiModelProperty(value="厂家编号、品牌编号，方便搜索")
    @NotNull(message = "品牌id不能为空")
    private Integer deviceBrandId;


    /**
     * 厂家出厂的设备序列号
     */
    @ApiModelProperty(value="厂家出厂的设备序列号")
    @NotBlank(message = "设备编号不能为空")
    @Length(max = 64,message = "设备编号不能超过64位")
    private String deviceSn;

    /**
     * 设备类型，1是塔吊、2是升降机、3是吊钩可视化、4是AI服务器、5是监控摄像头，6是用电监测设备
     */
    @ApiModelProperty(value="设备类型，1是塔吊、2是升降机、3是吊钩可视化、4是AI服务器、5是监控摄像头，6是用电监测设备")
    @NotNull(message = "设备类型不能为空")
    private Integer deviceType;

    /**
     * 最后在线时间
     */
    @ApiModelProperty(value="最后在线时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd ")
    private Date deviceLastTime;

    /**
     * 0是未启用，1是启用
     */
    @ApiModelProperty(value="0是未启用，1是启用")
    @NotNull(message = "设备状态不能为空")
    private Integer status;

    /**
     * 设备名称
     */
    @ApiModelProperty(value="设备名称")
    @Length(max = 24,message = "设备名称不能超过24位")
    private String deviceName;

    /**
     * 设备位置
     */
    @ApiModelProperty(value="设备位置")
    @Length(max = 24,message = "设备位置不能超过24位")
    private String deviceArea;

    /**
     * 责任人
     */
    @ApiModelProperty(value="责任人")
    @Length(max = 12,message = "设备编号不能超过12位")
    private String deviceLiable;

    /**
     * 责任人手机
     */
    @ApiModelProperty(value="责任人手机")
    @Length(max = 11,message = "责任人手机不能超过11位")
    private String deviceLiablePhone;

    /**
     * 进场时间
     */
    @ApiModelProperty(value="进场时间 yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd ")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date deviceEntryTime;

    /**
     * 绑定摄像头编号
     */
    @ApiModelProperty(value="绑定摄像头编号")
    @Length(max = 32,message = "摄像头编号编号不能超过32位")
    private String deviceBindCamera;

    /**
     * 设备安装时间
     */
    @ApiModelProperty(value="设备安装时间")
    private Integer installTime;

    /**
     * 备注
     */
    @ApiModelProperty(value="备注")
    private String remarks;

    /**
     * 入库时间
     */
    @ApiModelProperty(value="入库时间 yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 最后更新时间
     */
    @ApiModelProperty(value="最后更新时间 yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastTime;


}
